jak zjistit, ze se vypinaji win v onclose(query)?

Otázka od: petr palicka

24. 8. 2004 8:26

Zdravim,

   potrebuji v OnCloseQuery zjistit, zda se jedna o proste ukonceni
programu, nebo se shazuje OS. Podle toho se bud na neco zeptam, nebo ne.

dekuji

Peca

Odpovedá: Robert Suska

24. 8. 2004 9:04

Ahoj

Musis reagovat na spravy WM_QUERYENDSESSION alebo WM_ENDSESSION. Pokial
chces "zastavit" napr. restart tak musis osetrit spravu WM_QUERYENDSESSION.

Viac info tu
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/sysinfo/base/wm_queryendsession.asp

a tu
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/sysinfo/base/wm_endsession.asp

a konkretny priklad

private
  procedure WMQueryEndSession (var Msg : TWMQueryEndSession); message
WM_QueryEndSession;
end;

Implementation

procedure TForm1.WMQueryEndSession (var Msg : TWMQueryEndSession);
begin
  if MessageDlg('Close Windows now?',
                            mtConfirmation,
                            [mbYes,mbNo], 0) = mrNo then
      Msg.Result := 0
   else
      Msg.Result := 1;
end;

S pozdravom,
Robo


> potrebuji v OnCloseQuery zjistit, zda se jedna o proste ukonceni
> programu, nebo se shazuje OS. Podle toho se bud na neco zeptam, nebo ne.
>
> dekuji
>
> Peca


Odpovedá: Marian Nykel

24. 8. 2004 9:06

Zdravim,
zkus si odchytit zpravy o ukoncovani windows a v jejich zpracovani provest, co
potrebujes - neco takoveho:

procedure WMQueryEndSession(var Msg: TMessage); message WM_QUERYENDSESSION;
procedure WMEndSession(var Msg: TMessage); message WM_ENDSESSION;

...

procedure TfrmApp.WMEndSession(var Msg: TMessage);
begin
   //neco...
end;

procedure TfrmApp.WMQueryEndSession(var Msg: TMessage);
begin
   //neco...
end;

Zdravi
       MN


petr palicka wrote:

> Zdravim,
> potrebuji v OnCloseQuery zjistit, zda se jedna o proste ukonceni
> programu, nebo se shazuje OS. Podle toho se bud na neco zeptam, nebo ne.
>
> dekuji
>
> Peca